package com.penghe.www.baselibrary.utils

import java.lang.ref.WeakReference

/**
 * Created by alm on 17-6-1.
 * 图片加载器
 */
class BitmapLoader constructor(photoToLoad: BitmapHolder, imageLoader: ImageLoader) : Runnable {
    private val bitmapHolder: BitmapHolder = photoToLoad
    private val imageLoaderWeakReference: WeakReference<ImageLoader> = WeakReference(imageLoader)

    override fun run() {
        val imageLoader: ImageLoader = imageLoaderWeakReference.get() ?: return
        // 如果没有错位那么不做任何处理，如果错位那么需要再做一次加载处理
        if (imageLoader.imageViewReused(bitmapHolder)) {
            return
        }

        val bitmap = imageLoader.getBitmap(bitmapHolder.url)
        imageLoader.getMemoryCache().put(bitmapHolder.url, bitmap)

        if (imageLoader.imageViewReused(bitmapHolder)) {
            return
        }
        val displayer: BitmapDisplayer = BitmapDisplayer(bitmap, bitmapHolder,imageLoader)
        // 更新的操作放在UI线程中
        bitmapHolder.imageView.post(displayer);

    }
}